#pragma once
#include <iostream>
#include "jf_aod_base.h"

#include <opencv2/highgui/highgui.hpp>
#include <memory>
using namespace std;
using namespace cv;
using namespace cv::cuda;


// struct AODInput{
//     // GpuMat mat;
//     GpuMat mat;

// };

class AODGpuPrivate;
class AODGpu: public AbandonObjectDetect{
    public:
        AODGpu();
        AODGpu(int gpu_id);
        ~AODGpu();
        //将需要检测的图片进行检测
        void detect(const AODInput &input);

        void setAreaThresholdMin(int minArea);
        void setAreaThresholdMax(int maxArea);
        //设置相同检测框报警时间间隔
        void setTimeGapThreshold(float fSec); 

         //设置比对背景的更新帧数
        void setinterval(int interval);

        //设置初始化帧数
       void setthrescount(int threscount);

        //设置与过去每隔step帧取多少帧进行检测框比对
       void setcomparedFrame(int num);
       void setstep(int step);

       //设置检测灵敏度，与视频质量呈正比，视频质量好可以设置更高
       void setSensitivity(int degree);

    private:
        shared_ptr<AODGpuPrivate> m_pHandle;
        void init();
};

